package com.huashi.BinaryTree;


/**
 * 二叉树子树
 *
 * */
public class IsSubStructure {
    public boolean isSubStructure(TreeNode A, TreeNode B){


        //A遍历完 或者 B为空
        if (A==null || B==null){
            return false;
        }

        //当前节点遍历完 或者 遍历左子树 或者 遍历右子树
        return search(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B);
    }

    public boolean search(TreeNode A, TreeNode B){

        //B遍历完
        if (B == null){
            return true;
        }

        //A遍历完 或者 对应位置值不相等
        if (A == null || A.val!=B.val){
            return false;
        }

        //继续遍历后续节点
        return search(A.left,B.left) && search(A.right,B.right);
    }
}
